\documentclass{beamer}

\usepackage{beamerthemesplit}
\usepackage[russian]{babel}
\usepackage[utf8]{inputenc}

\begin{document}

\title{Интеграция языка для работы с реляционными базами данных в базовый язык JetBrains MPS}
\author{Никитин Павел Антонович}
\institute{Кафедра системного программирования, математико-механический факультет СПбГУ, 444 группа}
\date{Научный руководитель: Вадим Гуров (кандидат наук, программист ООО "ИнтеллиДжей Лабс")}

\frame{\titlepage} 

\frame{\frametitle{Описание проблемной области}
На данный момент существует несколько классов решений для работы с реляционными базами данных из языка общего назначения (Java).

\begin{itemize}
\item Препроцессорные Embedded SQL, SQLJ в Java
\item Слабо структурированный JDBC
\item Внутренние DSL (как jequel)
\end{itemize}
Популярные решения (Embedded SQL) появились довольно давно и требуют от программиста повышеной внимательности, препроцессор не даёт продуктивности современных IDE.
} 

\frame{\frametitle{Постановка задачи} 
Создание интегрированного в Java языка для работы с реляционными базами данных со структурированной подсказкой вводимого кода, подсветкой ошибок, анализом потока управления, статической типизацией рефакторингом и прочими полезными функциями.
}

\frame{\frametitle{Описание решения} 
Для создания языка был выбран языковой инструментарий JetBrains MPS (Meta Programming System) -- средство для создания языков и интегрированная среда для разработки на них. Созданы:
\begin{itemize}
\item Иерархия концептов (возможных вершин AST -- Abstract Syntax Tree) для SQL в MPS так, чтобы она была интегрирована в соответствуюшую иерархию в Java
\item Текстово-подобные редакторы для них
\item Дополнительная иерархию концептов (таких, как кортежи) для приведения данных SQL к baseLanguage и наоборот
\item Комплементарная дополнительной иерархии библиотека
\item Генератор новых конструкций в Java, JDBC и вызовы этой библиотеки
\item Статическая система типов для проверки их на лету в IDE
\end{itemize}

}

\frame{\frametitle{Результаты} 
В результате был получен расширяемый язык для работы с реляционными базами данных с полноценной IDE-инфраструктурой на базе JetBrains MPS, с интеграцией в Java, с широкой возможностью расширения, генерируемый в распространённый стандарт JDBC. Использование этого языка потенциально эффективнее существующих для решений встроенного SQL в Java.

Дальнейшие возможности улучшения:
\begin{itemize}
\item Добавление типизации для встроенных в SQL функций
\item Оптимизация формирования запросов во время исполнения
\item Проверка типов для вложенных SQL-запросов
\end{itemize}
}

\end{document}

